1. Field of the Invention
The invention relates generally to a storage device and particularly to a host-managed storage device.
2. Description of the Prior Art
Mass storage devices are used by different hosts to store a variety of data types, such as but not limited to: operating system (OS), boot code, user data, enhanced user data, security parameters. Each of these data types requires distinct storage characteristics and attributes such as high performance, high reliability, frequently accessed, and/or restricted accessibility. For example, typically, the storage device (or “media”) that is used for storing the OS requires significantly less memory capacity as compared to that which is used for storing user data yet it is required to be very reliable and high performance to minimize the amount of time expended during power-up (or initialization) of the storage device.
Some user data, such as database index structures, also require reliable and fast storage media and as such fall under an enhanced user data category. Other types of user data such as pictures, songs, videos and movies are typically considered non-critical data and require very large storage or memory capacity, therefore occupying the majority of a storage device that stores the user data. On the other hand however, they do not necessarily require storage residing inside of the storage device that is of high reliability or high performance.
A storage device (also referred to herein as a “mass storage device”) can be partitioned into different memory areas with each memory area (also known as a “partitions” or “logical units (LUNs)”) having independent logical address ranges and singularly accessible. Moreover, each of these partitions can be defined for a specified use or application and with particular attributes thereby allowing adaptability to different host usage models and Operating System requirements. LUNs can be configured, while within the device, to serve a specific purpose. Each LUN is typically characterized by one or more attributes specified by each memory manufacturer. Examples of attributes to differentiate LUNs properties are as follows:                High performance—higher write/read performances vs. more relaxed data reliability in the specified LUN        High reliability—the area is characterized by a higher read/write endurance        frequently accessed—the area is characterized by a higher read/write accesses        Accessibility properties—i.e. ROM LUNs        Enhanced user data—high performance and reliability        User data—cost sensitiveCurrent solid state mass storage devices are made primarily of NAND flash memories. NAND memories provide large storage at a reasonable price point but they fail to provide all the attributes required by the host that accesses the solid state mass storage device and are inherently slow with limited reliability and endurance, which makes them unattractive for applications requiring the foregoing attributes.        
NAND flash memory is generally block-based non-volatile memory with each block organized into and made of various pages. After a block is programmed (or “written to”) by, for example the host, it requires erasing prior to being programmed again, which is undesirable for various reasons including extra requisite steps and speed impediment.
Most flash memory require sequential programming of pages within a block. Another limitation of flash memory is that blocks can only be erased for a limited number of times of the life cycle of the flash memory. Unfortunately however, frequent erase operations reduces the life time of the flash memory.
Because flash memory does not allow for in-place updates, that is, it cannot simply overwrite existing data with new data, new data can only be written to an erased area (out-of-place updates), and the old data is required to be invalidated for reclamation in the future. This out-of-place update causes the coexistence of invalid (i.e. outdated) and valid data in the same block.
“Garbage collection” is a process referred to in reclaiming the space occupied by invalid data and where valid data is moved to a new block and the old block is erased. Garbage collection generally and undesirably results in significant performance overhead as well as unpredictable operational latency.
As mentioned above, blocks within a flash memory device can only be erased for a limited number of times. For this reason, wear leveling, a process well known is used to improve the life time of a device made of flash memory by leveling erase operations to blocks to try to distribute the erasure of blocks evenly throughout the blocks and over the entire flash memory (within a band). A typical Multi Level Cell (MLC) NAND flash manufactured using 25 nano meter technology typically has a program/erase (PE) cycle in the range of 1500 to 3000 cycles. Such flash requires erasing prior to being programmed with typical programming time or duration being approximately 10 millionth of a seconds (ms) and a program time for programming a 4 to 8 Kilo Byte page being approximately 1 to 2 ms.
NAND flash memories, despite all their deficiencies, are nevertheless the preferred medium of choice for solid state mass storage devices because of their capacity to save large amounts of data at reasonable prices.
What is needed is a high performance yet reliable mass storage device.